home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1993 / MacHack 1993.toast / MacHack™ 1987-1992 / MacHack™ '90 / Source Code ƒ / MPW C ƒ / C Include ƒ / Source Files / utilities.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-12-24  |  2.4 KB  |  169 lines  |  [TEXT/MPS ]

  1.  
  2. #include "CIncludesCode.h"
  3. #include <Files.h>
  4. #include <OSUtils.h>
  5. #include <StdIO.h>
  6. #include <Memory.h>
  7.  
  8. void fdisplay( char *s )
  9. {
  10.     char c;
  11.     
  12.     while ( c = *s++ )
  13.         if ( c <= 32 )
  14.             fprintf( stderr, "%d ", c );
  15.         else
  16.             fprintf( stderr, "%c ", c );
  17. }
  18.  
  19. Boolean equalStringsUncased( char *s1, char *s2 )
  20. {
  21.     char c1, c2;
  22.     
  23.     while ( *s1 )
  24.     {
  25.         c1 = *s1++;
  26.         c2 = *s2++;
  27.         if ( c1 != c2 )
  28.         {
  29.             c1 &= 0xDF;
  30.             c2 &= 0xDF;
  31.             if (  (c1 < 'A') ||
  32.                   (c1 > 'Z') ||
  33.                   (c1 != c2) )
  34.                 return false;
  35.         }
  36.     }
  37.     return ( *s1 == *s2 );
  38. }
  39.  
  40.  
  41. Boolean isString( char *p, char *q )
  42. { // p is pointer to text chars; q is pointer to C string.
  43.   // returns true if chars at p equal chars at q.
  44.  
  45.     for ( ; *q != '\0'; ++q, ++p )
  46.         if ( *q != *p )
  47.             return false;
  48.     return true;
  49. }
  50.  
  51.  
  52. Handle loadDataFile( char *filename )
  53. {
  54.     short          fileid;
  55.     long         filesize;
  56.     OSErr         error;
  57.     Handle        dataHdl = 0;
  58.     Str255        s;
  59.  
  60.     strcpy( s, filename );
  61.     c2pstr( s );
  62.  
  63.     if ( !( error = FSOpen( s, 0, &fileid ) ) )
  64.     {
  65.         if ( !( error = GetEOF( fileid, &filesize ) ) )
  66.             if ( dataHdl = NewHandle( filesize + 1 ) )
  67.                 error = FSRead( fileid, &filesize, *dataHdl );
  68.             else
  69.                 error = -1;
  70.  
  71.         (void) FSClose( fileid );
  72.     }
  73.  
  74.     if (error)
  75.         errorExit( "Error loading source file!" );
  76.  
  77.     *(*dataHdl + filesize) = '\n';
  78.     return dataHdl;
  79. }
  80.  
  81.  
  82. void copyNames( char *dest, char *src )
  83. { // extracts C filename from C pathname
  84.  
  85.     char *s = strrchr( src, (int) ':');
  86.     char *d = dest;
  87.  
  88.     ++s;
  89.     while ( *s )
  90.         *d++ = *s++;
  91.  
  92.     *d = '\0';
  93. }
  94.  
  95.  
  96. void errorExit( char *s )
  97. {
  98.     fprintf( stderr, "%s\n", s );
  99.     SysBeep(1);
  100.     exit(2);
  101. }
  102.  
  103.  
  104. void checkMemory()
  105. {
  106.     OSErr    err = MemError();
  107.     
  108.     if ( err )
  109.     {
  110.         fprintf( stderr, "Memory Operation Failed: %d\n", err );
  111.         SysBeep(1);
  112.         exit(2);
  113.     }
  114. }
  115.  
  116.  
  117. short getShort( char *p )
  118. {
  119.     union shortUnion n;
  120.     
  121.     n.cc[0] = *p++;
  122.     n.cc[1] = *p;
  123.     return ( n.ss );
  124. }
  125.  
  126.  
  127. void putShort( char *dest, short value )
  128. {
  129.     union shortUnion  n;
  130.  
  131.     n.ss = value;    
  132.     *dest++ = n.cc[0];
  133.     *dest   = n.cc[1];
  134. }
  135.  
  136.  
  137. short dictionaryIndex( char ch )
  138. {
  139.     if ( ch == '_' )
  140.         return 0;
  141.     else
  142.         return ( (ch & 0xDF) - '@' );
  143. }
  144.  
  145. Boolean validStart( char c )
  146. {
  147.     return ( (c == '_') |
  148.              ( (c >= 'A') && (c <= 'Z') ) | 
  149.              ( (c >= 'a') && (c <= 'z') ) );
  150. }
  151.  
  152. Boolean validChar( char c )
  153. {
  154.     return ( ( (c >= '0') && (c <= '9') ) | 
  155.              validStart( c ) );
  156. }
  157.  
  158. int validate( char *s )
  159. {
  160.     if ( (strlen( s ) > 63) || !validStart( *s ) )
  161.         return 2;
  162.     else
  163.         for ( ++s; *s != '\0'; ++s )
  164.             if ( !validChar( *s ) )
  165.                 return 2;
  166.     return 0;
  167. }
  168.  
  169.